package 笔试.暑期2023.腾讯音乐2022_暑期招聘;

import java.util.*;

/**
 * 给定一个由小写字母组成的字符串 s，求有多少小写字母出现了至少 k 次。
 */
public class T6_Solution {
    //36ms 10556KB
    //数组存储
    public int howMany(String S, int k) {
        int[] cnt = new int[26];
        for (int i = 0; i < S.length(); i++) {
            int idx = S.charAt(i) - 'a';
            cnt[idx]++;
        }
        int kTimes = 0;
        for (int i = 0; i < 26; i++) {
            if (cnt[i] >= k) {
                kTimes++;
            }
        }
        return kTimes;
    }

    //59ms  11976KB
    //map存储
    public int howMany1(String S, int k) {
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < S.length(); i++) {
            char ch = S.charAt(i);
            map.put(ch, map.getOrDefault(ch, 0) + 1);
        }
        int cnt = 0;
        for (Character ch : map.keySet()) {
            if (map.get(ch) >= k) {
                cnt++;
            }
        }
        return cnt;
    }
}